#ifndef PIPELINEELEMENT_H
#define PIPELINEELEMENT_H

#include <QDomDocument>
#include <QByteArray>

class PipelineElement
{
public:
    PipelineElement();
    virtual ~PipelineElement();
    
    virtual void setup(const QDomNode& setupDescription) = 0;
    
    const QByteArray& result();

protected:
    virtual void process() = 0;
    
    
protected:
    QByteArray buffer;
    bool processed;
};

class PipelineProcessingElement : public PipelineElement
{
public:
    PipelineProcessingElement();
    virtual ~PipelineProcessingElement();
    
public:
    PipelineElement *parent;
};

#endif // PIPELINEELEMENT_H
